home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple Reference & Presen…tion Library 2 (Reseller)
/
Apple R&P Lib Reseller v2.0.iso
/
3-Demos
/
HyperCard Demos
/
HyperCard In Education
/
Towers of Hanoi
/
stack.txt
< prev
Wrap
Text File
|
1989-07-14
|
5KB
|
129 lines
-- stack: in
-- format: 8 (HyperCard 1)
-- flags: 0x1000 (none)
-- protect password hash: 0
-- maximum user level: 5 (scripting)
-- window: Rect(x1=0, y1=0, x2=0, y2=0)
-- screen: Rect(x1=0, y1=0, x2=0, y2=0)
-- card dimensions: w=0 h=0
-- scroll: x=0 y=0
-- background count: 1
-- first background id: 2783
-- card count: 1
-- first card id: 3043
-- list block id: 2369
-- print block id: 0
-- font table block id: 0
-- style table block id: 0
-- free block count: 2
-- free size: 5952 bytes
-- total size: 24576 bytes
-- stack block size: 4096 bytes
-- created by hypercard version: 0x00000000
-- compacted by hypercard version: 0x01228000
-- modified by hypercard version: 0x01228000
-- opened by hypercard version: 0x01228000
-- patterns[0]: 0x0000000000000000
-- patterns[1]: 0x8000000008000000
-- patterns[2]: 0x8800220088002200
-- patterns[3]: 0x8888222288882222
-- patterns[4]: 0x88AA22AA88AA22AA
-- patterns[5]: 0xCCAA33AACCAA33AA
-- patterns[6]: 0xEEAABBAAEEAABBAA
-- patterns[7]: 0xEEBBBBEEEEBBBBEE
-- patterns[8]: 0xFFBBFFEEFFBBFFEE
-- patterns[9]: 0xFFBBFFFFFFBBFFFF
-- patterns[10]: 0x8010022001084004
-- patterns[11]: 0xFFFFFFFFFFFFFFFF
-- patterns[12]: 0x8822882288228822
-- patterns[13]: 0x1122448811224488
-- patterns[14]: 0xC4800C6843023026
-- patterns[15]: 0xB130031BD8C00C8D
-- patterns[16]: 0xAA00AA00AA00AA00
-- patterns[17]: 0x8822552288225522
-- patterns[18]: 0x8855225588552255
-- patterns[19]: 0x77DD77DD77DD77DD
-- patterns[20]: 0x8000000000000000
-- patterns[21]: 0xAA55AA55AA55AA55
-- patterns[22]: 0x038448300C020101
-- patterns[23]: 0x8244394482010101
-- patterns[24]: 0x8814224188412214
-- patterns[25]: 0x8080413E080814E3
-- patterns[26]: 0x22048C7422179810
-- patterns[27]: 0xBE808808EB088880
-- patterns[28]: 0x25C8328964244C92
-- patterns[29]: 0xA29C41BE2AC914EB
-- patterns[30]: 0x40A00000040A0000
-- patterns[31]: 0x8040200002040800
-- patterns[32]: 0xAA00800088008000
-- patterns[33]: 0xFF80808080808080
-- patterns[34]: 0x081C22C180010204
-- patterns[35]: 0xFF808080FF080808
-- patterns[36]: 0xF87422478F172271
-- patterns[37]: 0xBF00BFBFB0B0B0B0
-- patterns[38]: 0xFF7FBE5DA2418000
-- patterns[39]: 0xFAF5FAF5A050A050
-- checksum: 0x0
----- HyperTalk script -----
on domenu menu -- Script added by Animatrix 7/14/89
global RPstackname,RPcardname
if menu is in "Home,Quit HyperCard" then
if RPstackname is not empty then
answer "This will return to "&RPStackname&"."
set cursor to watch
lock screen
go card RPcardname of stack RPstackname
unlock screen with dissolve
exit domenu
else pass domenu -- if RPstackname is empty
else
pass domenu -- if menu is not in home or quit
end if
end domenu
-- Copyright © 1988 Cincinnati Country Day School. All rights reserved.
-- This is the recursive algorithm that moves a tower of "height" disks
-- from the "source" pole to the "dest" pole using the "aux" pole as
-- the auxiliary. It works as follows: if height is 0, there is no
-- tower to move, and if source = dest, there is no movement, so in
-- this case the algorithm exits having done nothing. Otherwise, the
-- algorithm recursively calls itself to move a tower of height - 1
-- disks from the source to the auxiliary via the destination. Having
-- thus moved all overlying disks out of the way, the algorithm then
-- simply moves disk number "Height" from the source to the destination.
-- Finally, it again calls itself recursively to move the tower of
-- height - 1 disks from the auxiliary to the destination on top of disk
-- number "Height." See the script of the background for the details
-- of other handlers.
on moveTower height, source, dest, aux
add 1 to field depth
if height > 0 and source ≠ dest then
moveTower height - 1, source, aux, dest
moveDisk height, source, dest
moveTower height - 1, aux, dest, source
end if
subtract 1 from field depth
end moveTower
on moveDisk n, source, dest
global yBase, dHeight, stackHeight, xPole, poleTop
get "Disk" && n
put the loc of bkgnd button it into dSource
put "0,0" into dDest1
put item source of xPole into item 1 of dDest1
put poleTop into item 2 of dDest1
put dDest1 into dDest2
put item dest of xPole into item 1 of dDest2
put dDest2 into dDest3
put yBase - dHeight * item dest of stackHeight into item 2 of dDest3
drag from dSource to dDest1
drag from dDest1 to dDest2
drag from dDest2 to dDest3
subtract 1 from item source of stackHeight
add 1 to item dest of stackHeight
add 1 to field moves
end moveDisk